<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>迭代器iterator</title>
</head>
<body>
<script>
    <!-- 迭代器的工作原理

    -->
    // 创建一个指针对象,指向当前数据结构的起始位置
    // 第一次调用对象的next方法,指针自动指向数据结构的第一个成员
    // 接下来不断调用next方法,指针一直往后移动,直到指向最后一个成员
    // 每调用next方法返回一个包含value和done属性的对象

    //声明一个对象
    const clazz = {
        name: "zhangsan",
        stus: [
            'xiaomi',
            'xiaomi2',
            'xiaomi3',
            'xiaomi4'
        ],
        [Symbol.iterator](){
            //索引变量
            let index = 0;
            let _this = this;
            return {
                next: function (){
                    if (index < this.stus.length){
                        const result = {value: this.stus[i],done:false};
                        //下标自增
                        index++;
                        return result;
                    }else {
                        return {value: undefined,done: true};
                    }

                }
            }
        }
    }
    //遍历这个对象
    for (let v of clazz){
        console.log(v);
    }



</script>
</body>
</html>